我不确定它们的区别是什么,看起来它们都在起作用.我用Google搜索,似乎它们几乎是一样的.只是出于好奇,人们在现场使用哪一个?
我读过但仍然不知道何时使用哪个,以及该领域的哪个人使用.我的工作都适合他们.起初我以为它是加载静态文件夹,但它也适用于静态文件... -
目前(Django 1.9及更早版本),从contrib应用程序{% load staticfiles %}
加载static
templatetag,该应用程序具有比内置更多的功能django.core.static
.
最重要的区别是staticfiles
可以管理存储在CDN上的文件,因为它的解析器可以管理哈希值.core.static
仅附加STATIC_URL
到静态文件名,如果您正在处理文件,这是不够的(例如,添加md5哈希以清除版本之间的缓存)
这种差异是由于管理非本地存储文件并不专门包含在Django的核心包中,但对许多开发人员来说仍然有用,可以作为官方的contrib包实现.因此,如果您开始使用staticfiles
,则必须记住在模板中使用它.但是,可能会出现一些问题,例如在使用Media
类时,所以决定将这两个模板标签合并为一个并使用不同的行为,无论开发人员是否django.contrib.staticfiles
在其中INSTALLED_APPS
.
从Django 1.10开始(也参见Django跟踪器中的票证),如果激活,{% load static %}
将在staticfiles
内部使用(oherwise保持默认行为),并且不推荐使用contrib包中的templatetag以避免混淆.
TL; DR
在Django 1.10之前:staticfiles
加载一个模板标签,可以管理static
不能(或不容易)的非本地存储;
从Django 1.10:contrib.staticfiles
应用程序仍然存在但其模板标签将被删除只有{% static %}
模板标签保留;
从Django 2.0(我相信):{% load staticfiles %}
被删除.
现在,staticfiles
如果您使用相关的contrib应用程序(并且您知道为什么使用它)直到Django 1.10 ,请使用templatetags,否则只需使用static
.